package ucla.axelia.vista;

import ucla.axelia.controlador.interfaces.IServicioAdministracionAsignarReconocimiento;
import ucla.axelia.modelo.data.Reconocimiento;
import ucla.axelia.modelo.data.Voluntario;
import ucla.axelia.modelo.data.ReconocimientoVoluntario;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Extent;

import com.obelisco.vista.componentes.Catalogo;
import com.obelisco.vista.componentes.ComponenteDatosListener;
import com.obelisco.vista.componentes.TextFieldCatalogo;
import com.obelisco.vista.componentes.TextFieldCatalogoListener;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.controles.BindingDateField;
import com.obelisco.vista.controles.Grid;
import com.obelisco.vista.controles.Label;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class PaneAsignarReconocimientoAnteriorEnLote extends ContentPane implements ComponenteDatosListener {
	// Definicion de atributos	
	private IServicioAdministracionAsignarReconocimiento servicioAdministracionAsignarReconocimiento;
	private ReconocimientoVoluntario reconocimientovoluntario;
	private Voluntario voluntario;
	private Reconocimiento reconocimiento;
	
	private TextFieldCatalogo txtCatVoluntario;
	private Catalogo catVoluntario;
	
	private TextFieldCatalogo txtCatReconocimiento;
	private Catalogo catReconocimiento;
	
	private BindingDateField txtFecha;
	
	private TextFieldCatalogoListener txtCatVoluntarioListener = new TextFieldCatalogoListener() {
		
		public void onSeleccionar(Object objeto) {
			setVoluntario(((Voluntario)objeto));	
			txtCatVoluntario.setText(voluntario.getCodigoVoluntario());
		}
		
	};
	
	private TextFieldCatalogoListener txtCatReconocimientoListener = new TextFieldCatalogoListener() {
		
		public void onSeleccionar(Object objeto) {
			setReconocimiento(((Reconocimiento)objeto));	
			txtCatReconocimiento.setText(reconocimiento.getNombreReconocimiento());
		}
		
	};
	
	public Voluntario getVoluntario() {
		return voluntario;
	}

	public void setVoluntario(Voluntario voluntario) {
		this.voluntario = voluntario;
	}

	public void initComponents () {
		//this.reconocimientovoluntario=new ReconocimientoVoluntario();
		
		txtFecha=new BindingDateField(120);
		this.removeAll();
		this.setEnabled(true);
		
		
		Grid grid1 = new Grid();
		grid1.setStyleName("Obelisco.GridPaneDialogo");
		grid1.setSize(2); //Numero de columnas de la tabla
		grid1.setColumnWidth(0, new Extent(150, Extent.PX)); //PX denota pixeles
		
		Label lblSerial = new Label ("Voluntario");
		
		Label lblReconocimiento = new Label ("Reconocimiento");		
		txtCatReconocimiento = new TextFieldCatalogo(150);
		txtCatReconocimiento.setCatalogo(this.catReconocimiento);
		txtCatReconocimiento.addCatalogoListener(this.txtCatReconocimientoListener);		
		grid1.add(lblReconocimiento);
		grid1.add(txtCatReconocimiento);
		
		Label lblVoluntario = new Label ("Voluntario");
		txtCatVoluntario = new TextFieldCatalogo(150);
		txtCatVoluntario.setCatalogo(this.catVoluntario);
		txtCatVoluntario.addCatalogoListener(this.txtCatVoluntarioListener);
		grid1.add(lblVoluntario);
		grid1.add(txtCatVoluntario);
		
		Label lblFecha = new Label ("Fecha de Entrega");
		grid1.add(lblFecha);
		grid1.add(txtFecha);
		
		Column columna = new Column();
		columna.add(grid1);
		
		this.add(columna);
	}
	
	
	public void onCancelar() {
	}

	public void onConfirmarCambios(Object arg0, TipoFuncion arg1, String arg2) {		
		if(arg1==TipoFuncion.INCLUIR || arg1==TipoFuncion.MODIFICAR ){
			Calendar c= txtFecha.getDateChooser().getSelectedDate();					
			reconocimientovoluntario.setFechaEntrega(c.getTime());
			reconocimientovoluntario.setAnnoEntrega(c.get(Calendar.YEAR));
			reconocimientovoluntario.setVoluntario(voluntario);		
			reconocimientovoluntario.setReconocimiento(reconocimiento);
			reconocimientovoluntario.setEstado("A");
		}
	}

	public void onConfirmarEliminacion(Object arg0) {
		
	}

	public void onConsultar(Object arg0) {
		setEnabled(false);
		colocaEstado(arg0);
	}

	public void onCrear() {
	}
	

	public void onFuncionPersonalizada(Object arg0, TipoFuncion arg1, String arg2) {
	}

	public void onIncluir(Object arg0) {
	}

	public void onInicializar() {
		this.initComponents();		
	}
	
	private void colocaEstado(Object arg0){
		ReconocimientoVoluntario reconocimientoVoluntario;
		if(!(arg0 instanceof ReconocimientoVoluntario))
			reconocimientoVoluntario = (ReconocimientoVoluntario)((ArrayList)arg0).get(0);
		else
			reconocimientoVoluntario = (ReconocimientoVoluntario)arg0;
		
		this.reconocimiento=reconocimientoVoluntario.getReconocimiento();
		this.voluntario=reconocimientoVoluntario.getVoluntario();
		
		txtCatVoluntario.setText(reconocimientoVoluntario.getVoluntario().getIdVoluntario().toString());
		txtCatReconocimiento.setText(reconocimientoVoluntario.getReconocimiento().getNombreReconocimiento());
		Calendar c=Calendar.getInstance();
		c.setTime(reconocimientoVoluntario.getFechaEntrega());
		txtFecha.setSelectedDate(c);
	}

	public void onModificar(Object arg0) {
		colocaEstado(arg0);	
	}

	public void onObjetoEntidad(Object arg0) {
		if(!(arg0 instanceof ReconocimientoVoluntario))
			this.reconocimientovoluntario = (ReconocimientoVoluntario)((ArrayList)arg0).get(0);
		else
			this.reconocimientovoluntario = (ReconocimientoVoluntario)arg0;
	}

	public boolean onValidarDatos(Object arg0, TipoFuncion arg1, String arg2) {
		return true;
	}

	public IServicioAdministracionAsignarReconocimiento getServicioAdministracionAsignarReconocimiento() {
		return servicioAdministracionAsignarReconocimiento;
	}

	public void setServicioAdministracionAsignarReconocimiento(
		IServicioAdministracionAsignarReconocimiento servicioAdministracionAsignarReconocimiento) {
		this.servicioAdministracionAsignarReconocimiento = servicioAdministracionAsignarReconocimiento;
	}


	public Catalogo getCatVoluntario() {
		return catVoluntario;
	}


	public void setCatVoluntario(Catalogo catVoluntario) {
		this.catVoluntario = catVoluntario;
	}


	public TextFieldCatalogo getTxtCatVoluntario() {
		return txtCatVoluntario;
	}


	public void setTxtCatVoluntario(TextFieldCatalogo txtCatVoluntario) {
		this.txtCatVoluntario = txtCatVoluntario;
	}


	public Catalogo getCatReconocimiento() {
		return catReconocimiento;
	}


	public void setCatReconocimiento(Catalogo catReconocimiento) {
		this.catReconocimiento = catReconocimiento;
	}


	public TextFieldCatalogo getTxtCatReconocimiento() {
		return txtCatReconocimiento;
	}


	public void setTxtCatReconocimiento(TextFieldCatalogo txtCatReconocimiento) {
		this.txtCatReconocimiento = txtCatReconocimiento;
	}


	public Reconocimiento getReconocimiento() {
		return reconocimiento;
	}


	public void setReconocimiento(Reconocimiento reconocimiento) {
		this.reconocimiento = reconocimiento;
	}


	public void onListaParametros(List listaParametros) {
		// TODO Auto-generated method stub
		
	}
}

